﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Plazos
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

       /* private void button_nuevSem_Click(object sender, EventArgs e)
        {
            Form_newSem frm = new Form_newSem();
            frm.Show();
        }
        */
        private void button_out_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void button_ingCur_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Click botón ingresar curso.");
            FormAgregaSemestre frm = new FormAgregaSemestre();
            frm.Show();
          
        }

        private void button_salir_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {

        }

        private void button_verFechas_Click(object sender, EventArgs e)
        {
            FormVerFechas frm = new FormVerFechas();
            frm.Show();    
        }

        private void button_modFeriado_Click(object sender, EventArgs e)
        {
            Console.WriteLine("Botón modificar feriado");
            formAgregaFeriado frm = new formAgregaFeriado();
            frm.Show();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Feriados fe2 = new Feriados();
            List<String> fer = fe2.rescataFeriados();
                       
            Curso cur = new Curso();
            List<Curso> cursos = cur.getCursos();
            String s = "";
            //Console.WriteLine("sic: " + c.Sic + ">");
            List<DateTime> ordenar = new List<DateTime>();
            string primero; 
            
            foreach (Curso c in cursos)
            {

                primero = cur.restaDiaHabil(c.F2, 10, fer);
                if (mesActual(primero)) {
                    ordenar.Add(Convert.ToDateTime(primero));
                }
                if (mesActual(c.FechaInicioLect))
                {
                  //  s = "\n" + c.Sic + "       " + c.FechaInicioLect + "     " + "Inicio Lectivo ";
                    ordenar.Add(Convert.ToDateTime(c.FechaInicioLect));
                    //listBoxFechas.Items.Add(s);
                }
                if (mesActual(c.FechaTermLect))
                {
                    //s = c.Sic + "       " + c.FechaTermLect + "     " +  "Término Lectivo ";
                    ordenar.Add(Convert.ToDateTime(c.FechaTermLect));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.Colocar))
                {
                    //s = c.Sic + "       " + c.FechaTermLect + "     " +  "Término Lectivo ";
                    ordenar.Add(Convert.ToDateTime(c.Colocar));
                    //listBoxFechas.Items.Add(s);
                }

                if (c.Modificar == "t")
                {
                    if (mesActual(c.FechaInicioPractica))
                    {
                        //s = c.Sic + "       " + c.FechaPractica + "     " + "Fecha primer  alumno en práctica ";
                        ordenar.Add(Convert.ToDateTime(c.FechaPractica));
                        //listBoxFechas.Items.Add(s);
                    }


                    if (mesActual(c.FechaPractica))
                    {
                        //s = c.Sic + "       " + c.FechaPractica + "     " + "Fecha último alumno en práctica ";
                        ordenar.Add(Convert.ToDateTime(c.FechaPractica));
                        //listBoxFechas.Items.Add(s);
                    }

                }
                if (mesActual(c.Relatores))
                {
                    //s = c.Sic + "       " + c.Relatores + "     " + "Ingreso de los relatores ";
                    ordenar.Add(Convert.ToDateTime(c.Relatores));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.Supervision50))
                {
                    //s = c.Sic + "       " + c.Supervision50 + "     " + "Supervisión que se realizará al 50% del curso ";
                    ordenar.Add(Convert.ToDateTime(c.Supervision50));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.Encuesta75))
                {
                    //s = c.Sic + "       " + c.Encuesta75 + "     " + "Encuesta que se debe realizar al 75% del curso ";
                    ordenar.Add(Convert.ToDateTime(c.Encuesta75));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.Publicar))
                {
                    //s = c.Sic + "       " + c.Publicar + "     " + " Enviar por correo electrónico a la coordinación nacional del programa los horarios y lugares de ejecución de los cursos a fin de que éstos sean publicados en el portal de postulación ";
                    ordenar.Add(Convert.ToDateTime(c.Publicar));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.CorrerLista))
                {
                    //s = c.Sic + "       " + c.CorrerLista + "     " + "Correr lista al 20% del curso ";
                    ordenar.Add(Convert.ToDateTime(c.CorrerLista));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.AcuerdoOperativo))
                {
                    //s = c.Sic + "       " + c.AcuerdoOperativo + "     " + "Enviar acuerdo operativo ";
                    ordenar.Add(Convert.ToDateTime(c.AcuerdoOperativo));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.F1))
                {
                    //s = c.Sic + "       " + c.F1 + "     " + "F1  ";
                    ordenar.Add(Convert.ToDateTime(c.F1));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.F1C))
                {
                    //s = c.Sic + "       " + c.F1C + "     " + "ültimo plazo para enviar el F1C ";
                    ordenar.Add(Convert.ToDateTime(c.F1C));
                    //listBoxFechas.Items.Add(s);
                }

                if (mesActual(c.IngresoSence))
                {
                    //s = c.Sic + "       " + c.IngresoSence + "     " + "Ingresar formulario resumen de la fase 1, registrando la situación final de los alumnos ";
                    ordenar.Add(Convert.ToDateTime(c.IngresoSence));
                    //listBoxFechas.Items.Add(s);
                }
                if (c.Modificar == "t")
                {
                    if (mesActual(c.F2))
                    {
                        //s = c.Sic + "       " + c.F2 + "     " + "F2 'registro de los alumnos colocados en práctica'  ";
                        ordenar.Add(Convert.ToDateTime(c.F2));
                        //listBoxFechas.Items.Add(s);
                    }

                    if (mesActual(c.F2C))
                    {
                        //  s = c.Sic + "       " + c.F2C + "     " + "F2C ";
                        ordenar.Add(Convert.ToDateTime(c.F2C));
                        //listBoxFechas.Items.Add(s);
                    }

                    if (mesActual(c.F3))
                    {
                        //s = c.Sic + "       " + c.F3 + "     " + "F3 ";
                        ordenar.Add(Convert.ToDateTime(c.F3));
                        //listBoxFechas.Items.Add(s);
                    }

                    if (mesActual(c.Seguimiento))
                    {
                        //    s = c.Sic + "       " + c.Seguimiento + "     " + "Seguimiento ";
                        ordenar.Add(Convert.ToDateTime(c.Seguimiento));
                        //listBoxFechas.Items.Add(s);
                    }
                    if (mesActual(c.IngSeguimiento1))
                    {
                        // s = c.Sic + "       " + c.IngSeguimiento1 + "     " + "Comienza el período para ingresar en el formulario dos 'registro de alumnos que comienzan la fase de seguimiento' ";
                        ordenar.Add(Convert.ToDateTime(c.IngSeguimiento1));
                        //listBoxFechas.Items.Add(s);
                    }
                    if (mesActual(c.IngSeguimiento2))
                    {
                        //s = c.Sic + "       " + c.IngSeguimiento2 + "     " + "Términa el período para ingresar en el formulario dos 'registro de alumnos que comienzan la fase de seguimiento' ";
                        ordenar.Add(Convert.ToDateTime(c.IngSeguimiento2));
                        // listBoxFechas.Items.Add(s);
                    }
                    if (mesActual(c.F4))
                    {
                        // s = c.Sic + "       " + c.F4 + "     " + "último día para ingresar el f4  'Resultado salida laboral' ";
                        ordenar.Add(Convert.ToDateTime(c.F4));
                        //listBoxFechas.Items.Add(s);
                    }

                    if (mesActual(c.Certificado))
                    {
                        // s = c.Sic + "       " + c.Certificado + "     " + "Certificado ";
                        ordenar.Add(Convert.ToDateTime(c.Certificado));
                        //listBoxFechas.Items.Add(s);
                    }
                }
            }
                SortAscending(ordenar);
                List<DateTime> sinRepetidos = ordenar.Distinct().ToList();
                List<String> fechas = new List<String>();
                String fe;
                foreach (DateTime f in sinRepetidos) {
                    fe= Convert.ToString(f);
                    fe = fe.Substring(0, 10);
                    fechas.Add(fe);
                    
                }
           
                foreach (String a in fechas)
                {
                    foreach (Curso c in cursos)
                    {
                        
                        //MessageBox.Show("Fecha de f2 = " + c.F2 + "fecha primero " + primero);
                        if (a ==c.FechaInicioLect)
                        {
                            s = "\n" + c.Sic + "       " + c.FechaInicioLect + "     " + "Inicio Lectivo ";
                            
                            listBoxFechas.Items.Add(s);
                        }
                        if (a ==c.FechaTermLect)
                        {
                            s = c.Sic + "       " + c.FechaTermLect + "     " + "Término Lectivo ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.Colocar)
                        {
                            s = c.Sic + "       " + c.Colocar + "     " + "Último día para colocar a los alumnos en práctica";

                            listBoxFechas.Items.Add(s);
                        }


                        if (c.Modificar == "t")
                        {
                            if (a == c.FechaInicioPractica)
                            {
                                s = c.Sic + "       " + c.FechaInicioPractica + "     " + "Fecha primer alumno en práctica ";

                                listBoxFechas.Items.Add(s);

                            }
                            if (a == c.FechaPractica)
                            {
                                s = c.Sic + "       " + c.FechaPractica + "     " + "Fecha último alumno en práctica ";

                                listBoxFechas.Items.Add(s);
                            }
                        }

                        if (a == c.Relatores)
                        {
                            s = c.Sic + "       " + c.Relatores + "     " + "Ingreso de los relatores ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.Supervision50)
                        {
                            s = c.Sic + "       " + c.Supervision50 + "     " + "Supervisión que se realizará al 50% del curso ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.Encuesta75)
                        {
                            s = c.Sic + "       " + c.Encuesta75 + "     " + "Encuesta que se debe realizar al 75% del curso ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.Publicar)
                        {
                            s = c.Sic + "       " + c.Publicar + "     " + "Enviar mail a la coordinación nacional del programa los horarios y lugares de ejecución de los cursos a fin de que éstos sean publicados en el portal de postulación ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.CorrerLista)
                        {
                            s = c.Sic + "       " + c.CorrerLista + "     " + "Correr lista al 20% del curso ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.AcuerdoOperativo)
                        {
                            s = c.Sic + "       " + c.AcuerdoOperativo + "     " + "Enviar acuerdo operativo ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.F1)
                        {
                            s = c.Sic + "       " + c.F1 + "     " + "F1  ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.F1C)
                        {
                            s = c.Sic + "       " + c.F1C + "     " + "ültimo plazo para enviar el F1C ";
                            
                            listBoxFechas.Items.Add(s);
                        }

                        if (a == c.IngresoSence)
                        {
                            s = c.Sic + "       " + c.IngresoSence + "     " + "Ingresar formulario resumen de la fase 1, registrando la situación final de los alumnos ";
                            
                            listBoxFechas.Items.Add(s);
                        }
                        if (c.Modificar == "t")
                        {
                            if (a == c.F2)
                            {
                                s = c.Sic + "       " + c.F2 + "     " + "F2 ";

                                listBoxFechas.Items.Add(s);
                            }

                            if (a == c.F2C)
                            {
                                s = c.Sic + "       " + c.F2C + "     " + "F2C ";

                                listBoxFechas.Items.Add(s);
                            }


                            if (a == c.F3)
                            {
                                s = c.Sic + "       " + c.F3 + "     " + "F3 ";

                                listBoxFechas.Items.Add(s);
                            }

                            if (a == c.Seguimiento)
                            {
                                s = c.Sic + "       " + c.Seguimiento + "     " + "Seguimiento ";

                                listBoxFechas.Items.Add(s);
                            }
                            if (a == c.IngSeguimiento1)
                            {
                                s = c.Sic + "       " + c.IngSeguimiento1 + "     " + "Comienza el período para ingresar en el formulario dos 'registro de alumnos que comienzan la fase de seguimiento' ";

                                listBoxFechas.Items.Add(s);
                            }
                            if (a == c.IngSeguimiento2)
                            {
                                s = c.Sic + "       " + c.IngSeguimiento2 + "     " + "Términa el período para ingresar en el formulario dos 'registro de alumnos que comienzan la fase de seguimiento' ";

                                listBoxFechas.Items.Add(s);
                            }
                            if (a == c.F4)
                            {
                                s = c.Sic + "       " + c.F4 + "     " + "último día para ingresar el f4  'Resultado salida laboral' ";

                                listBoxFechas.Items.Add(s);
                            }

                            if (a == c.Certificado)
                            {
                                s = c.Sic + "       " + c.Certificado + "     " + "Certificado ";

                                listBoxFechas.Items.Add(s);
                            }
                        }
                    }
                }
        }

        private void menuSemestreAgregar_Click(object sender, EventArgs e)
        {
            
            FormAgregaSemestre frm = new FormAgregaSemestre ();
            frm.Show();
           
        }

        private void menuCursoAgregar_Click(object sender, EventArgs e)
        {
            FormAgregaCurso frm = new FormAgregaCurso();
            frm.Show();
        }

        private void menuFeriadoAgregar_Click(object sender, EventArgs e)
        {
            formAgregaFeriado frm = new formAgregaFeriado();
            frm.Show();
        }

        private void menuSemestreModificar_Click(object sender, EventArgs e)
        {
            FormModificarSemestre frm = new FormModificarSemestre();
            frm.Show();
        }

        private void menuSemestreEliminar_Click(object sender, EventArgs e)
        {
            FormEliminarSemestre frm = new FormEliminarSemestre();
            frm.Show();
        }

        private void menuCursoEliminar_Click(object sender, EventArgs e)
        {
            FormEliminarCurso frm = new FormEliminarCurso();
            frm.Show();
        }

        private void menuFeriadoEliminar_Click(object sender, EventArgs e)
        {
            FormEliminarFeriado frm = new FormEliminarFeriado();
            frm.Show();
        }

        private void menuCursoModificar_Click(object sender, EventArgs e)
        {
            FormModificarCurso frm = new FormModificarCurso();
            frm.Show();
        }

        private void listBoxFechas_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        private Boolean mesActual(String fecha) {

            DateTime recibe = Convert.ToDateTime(fecha);
            DateTime thisDay = DateTime.Today;
            int a;
            a = (int)thisDay.Month;
           
            a = a + 1;
           // b = a + 2;


            if ((int)recibe.Year == (int)thisDay.Year)
            {
                if ((int)recibe.Month == (int)thisDay.Month || a == (int)recibe.Month)
                {
                    return true;
                }
            }
            return false; 
        }

        private void cursoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormMostrarPideSic frm = new FormMostrarPideSic();
            frm.Show();
        }

        private void semestreCompletoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormMostrarPideSemestre frm = new FormMostrarPideSemestre();
            frm.Show();
        }

        private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        static List<DateTime> SortAscending(List<DateTime> list)
        {
            list.Sort((a, b) => a.CompareTo(b));
            return list;
        }
        
    }
}
